/*
 * Sonatype Nexus (TM) Open Source Version
 * Copyright (c) 2008-present Sonatype, Inc.
 * All rights reserved. Includes the third-party code listed at http://links.sonatype.com/products/nexus/oss/attributions.
 *
 * This program and the accompanying materials are made available under the terms of the Eclipse Public License Version 1.0,
 * which accompanies this distribution and is available at http://www.eclipse.org/legal/epl-v10.html.
 *
 * Sonatype Nexus (TM) Professional Version is available from Sonatype, Inc. "Sonatype" and "Sonatype Nexus" are trademarks
 * of Sonatype, Inc. Apache Maven is a trademark of the Apache Software Foundation. M2eclipse is a trademark of the
 * Eclipse Foundation. All other trademarks are the property of their respective owners.
 */
package org.sonatype.nexus.repository.rest.cma

import org.sonatype.nexus.repository.rest.cma.ComponentResponseUtils
import org.sonatype.nexus.repository.storage.DefaultComponent

import spock.lang.Specification

class ComponentResponseUtilsTest
    extends Specification
{
  def "a component with only a name has only that name in the return map"() {
    given: 'component only has name'
      def component = new DefaultComponent()
      component.name("name")

    when: 'method called'
      def result = ComponentResponseUtils.mapFor(component)

    then: 'map will only contain name'
      result.size() == 1
      result.containsKey("name")
  }

  def "a component with all attributes has all three entries in map"() {
    given: 'component is fully populated'
      def component = new DefaultComponent()
      component.name("name")
      component.group("group")
      component.version("1.0.0")

    when: 'method called'
      def result = ComponentResponseUtils.mapFor(component)

    then: 'map will contain all three entries'
      result.size() == 3
      result.containsKey("name")
      result.containsKey("group")
      result.containsKey("version")
  }
}
